package br.odonto.entities;


import java.util.Date;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.ForeignKey;

@Entity
@Table(name="pessoa")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="tipousuario", discriminatorType=DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
public class Pessoa {
	@Id
	@GeneratedValue
	private int id;
	@Column(nullable=false)
	private String nome;
	@Column(nullable=false)
	private String sobre_nome;
	@Column(length=10)
	private String telefone;
	@Column(length=11)
	private String celular;
	@Column(length=40)
	private String email;
	@Column(length=11,nullable=false)
	private String cpf;
	@Column(length=9,nullable=false)
	private String rg;
	@Temporal(TemporalType.DATE)
	private Date dtNascimento;
	@Column(length=20, nullable=false)
	private String bairro;
	@Column(name="sexo",length=1)
	private char sexo;
	@Column
	private String endereco;
	@ManyToOne
	@ForeignKey(name="FK_estado_pessoa")
	@Cascade(CascadeType.SAVE_UPDATE)
	private UF uf;
	@ManyToOne
	@ForeignKey(name="FK_cidade_pessao")
	@Cascade(CascadeType.SAVE_UPDATE)
	private Cidade cidade_pessoa;
	@OneToOne
	@Cascade(CascadeType.ALL)
	@JoinColumn(name="idPessoaUsuario")
	private Usuario usuario;
	
	public Pessoa() {
		
	}
	
	
	public Usuario getUsuario() {
		return usuario;
	}


	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}


	public UF getUf() {
		return uf;
	}


	public void setUf(UF uf) {
		this.uf = uf;
	}


	public Cidade getCidade_pessoa() {
		return cidade_pessoa;
	}


	public void setCidade_pessoa(Cidade cidade_pessoa) {
		this.cidade_pessoa = cidade_pessoa;
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getBairro() {
		return bairro;
	}


	public void setBairro(String bairro) {
		this.bairro = bairro;
	}


	public char getSexo() {
		return sexo;
	}


	public void setSexo(char sexo) {
		this.sexo = sexo;
	}


	public String getEndereco() {
		return endereco;
	}


	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}


	public String getCpf() {
		return cpf;
	}


	public void setCpf(String cpf) {
		this.cpf = cpf;
	}


	public String getRg() {
		return rg;
	}


	public void setRg(String rg) {
		this.rg = rg;
	}


	public Date getDtNascimento() {
		return dtNascimento;
	}


	public void setDtNascimento(Date dtNascimento) {
		this.dtNascimento = dtNascimento;
	}

	
	public String getTelefone() {
		return telefone;
	}


	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}


	public String getCelular() {
		return celular;
	}


	public void setCelular(String celular) {
		this.celular = celular;
	}


	public String getEmail() {
		return email;
	}


	public void setEmail(String email) {
		this.email = email;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSobre_nome() {
		return sobre_nome;
	}

	public void setSobre_nome(String sobre_nome) {
		this.sobre_nome = sobre_nome;
	}
	
}
